storage
讓套件可以存讀資料以及監聽儲存項目的更動。
儲存系統基於 Web Storage API,有一些不同,包括:
- 非同步
- 值的作用域在套件而不是某個特定的網域(後端的所有腳本與內容腳本都可用同樣的鍵值)。
- 儲存的值可以是任何的 JSON-ifiable 值而並非只能是
String
。這包括了:陣列
、物件
。但只有在內容可以被以 JSON 表示的時候,這表示不包含 DOM 節點。你不需要特地把值轉爲 JSONStrings
來儲存它們,它們在內部就是以 JSON 來表示的。 - 同一個 API 呼叫中可以設置或取得複數鍵值。
要使用這個 API 你必須在 manifest.json 裡面加入 "storage" 的權限。
每個套件都有自己的儲存空間,它們可以被切分爲不同種類的儲存。
雖然這個 API 與Window.localStorage
很相似,建議你不要在套件裡使用 Window.localStorage
儲存套件相關資料。Firefox 在用戶由於隱私問題清除歷史記錄與資料時會清除 localStorage API 儲存的資料,而 storage.local
API 儲存的則會留著。
備註: 儲存空間不會被加密,所以你不應該把它們用來儲存用戶的機密資料。
型別
storage.StorageArea
-
表示儲存空間的物件。
storage.StorageChange
-
表示儲存空間變化的物件。
屬性
storage
有三個屬性,各自表示不同種類的儲存空間。
storage.sync
-
表示
sync
儲存空間。sync
儲存空間裡的項目會被瀏覽器同步,所以可以跨裝置在所有已登入瀏覽器實例裡面使用。 storage.local
-
表示
local
儲存空間。local
儲存空間裡的項目會被侷限在安裝套件的機器上。 storage.managed
-
表示
managed
儲存空間。managed
儲存空間的項目由網域管理者設置而且對套件唯讀,修改這項會導致錯誤。
事件
storage.onChanged
-
當儲存空間裡的一個或更多項目被修改時觸發。
瀏覽器兼容性
範例擴充套件
- annotate-page
- favourite-colour
- forget-it
- navigation-stats
- proxy-blocker
- quicknote
- stored-credentials
- userScripts-mv3
備註:
此 API 基於 Chromium 的 chrome.storage
API 而來,文件改作自 Chromium 程式碼裡的 storage.json
。